package com.sgb.kjwl.model.entity.transport;

import android.os.Parcel;
import android.os.Parcelable;

import androidx.annotation.IntDef;

import com.chad.library.adapter.base.entity.MultiItemEntity;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;

/**
 * @author: 杨畔
 * @date: 2021/1/21 12:00
 * @Description: 发布货源请求数据类
 */
public class CargoPublishEntity implements Parcelable {
    private String no;//货源no
    private int id;//货源id
    private int pattern;//货源发布模式 0 普通模式  1 竞价模式
    private long beginTime;//装货开始时间
    private long endTime;//装货结束时间
    private long biddingEndTime;//竞价结束时间
    private String loadModeNo;//装卸方式no 11：一装一卸 12：一装两卸 21：两装一卸 22：两装两卸
    private String loadMode;//装卸方式
    private String goodsModeNo;//货物类型no
    private String goodsModeName;//货物类型name
    private String packageModeNo;//包装方式no
    private String packageModeName;//包装方式name
    private double goodsWeight;//货物重量（单位：吨
    private double goodsVolume;//货物体积（单位：方
    private Double msgPrice;//信息费
    private double freight;//运费
    private int freightMode;//运费计费方式 1：元/趟，2：元/吨，3：元/方
    private double totalFreight;//总运费
    private List<GoodsInfoTypeEntity3> carTypeList;//选中车长列表
    private List<GoodsInfoTypeEntity3> carLenList;//选中车型列表
    private Integer isDump;//是否自卸 0：非自卸 1：自卸
    private double heightHurdle;//栏高
    private int isPush;//是否推送 0：不推 1：推送
    private String companyNo;//公司no
    private String company;//公司名称
    private String contact;//联系人
    private String contactTel;//联系人电话
    private String invoice;//发票和税率拼接好的名字
    private Double tariff;//税率
    private String invoiceNo;
    private String invoiceRequest;//发票类型名字
    private String payType;//结算方式
    private String mark;//备注(2.0.1更改为货车运输监督要求)
    private List<SingleItemEntity> customList;//自定义字段
    private List<LocationEntity> locationList;//发货/收货地址列表
    private CargoDistanceEntity distance;//距离
    //物流2.0.1新增字段 begin
    private Integer arrivalTime;//到货时间（日）
    private Double performanceBond;//履约保证金
    private String lostPromise;//损坏丢失约定
    private String overduePromise;//预期约定
    private String otherPromise;//其他约定
    private String receiptAccountRequire;//收款账户要求
    private String otherPaymentRequire;//其他付款要求
    private String invoicingCompanyName;//开票公司名称
    private String invoicingTaxNumber;//开票税号
    private String invoicingAddress;//开票地址
    private String invoicingCompanyPhone;//开票企业电话
    private String invoicingBank;//开票开户银行
    private String invoicingBankAccount;//开票银行账户
    private String invoicingBankNumber;//开票开户行号
    //物流2.0.1新增字段 end
    //自定字段
    private boolean isHistory;//表示是否是历史货源数据
    //物流2.0.4新增字段内容核对功能
    private String alterName;//只记录内容不匹配的其中一个字段
    private int alterNum = 0;//记录不匹配的字段数量
    //2.0.4新增
    private boolean isInvoiceChanges;//税率发票要求是否变更
    //2.0.6新增字段
    private int startPointTime;//装货开始时间点
    private int endPointTime;//装货结束时间点
    private int require;//装车要求
    private int useCarType = 1;//用车类型 0 零担 1 整车
    private int freightType;//运费类型 0一口价 1电议
    //2.0.8新增竞价货源字段
    private String specification;//货物规格
    private Boolean includeTax;//是否含税 0 不含 1 含税 null 未填写
    private Double damageAgreement;//货损约定(吨)
    private Double damageCompensation;//货损赔偿(元/吨)
    private String otherSettlementReq;//其他结算要求
    private boolean[] quotationQualification;//报价资格 0 企业 1团队 2司机
    private Double registeredCapital;//注册资本(万元)
    private Integer fleetSize;//车队规模(辆)
    private String transportationQualification;//运输资质
    private String otherRequirements;//其他要求
    private String projectName;//项目名称
    private ProjectAddressEntity projectAddress;//项目地址
    private String projectDesc;//项目描述
    private String transportReq;//运输要求
    private String PartyAAgreement;//甲方责任约定
    private String PartyBAgreement;//乙方责任约定
    private String breachOfContract;//违约约定
    private String terminationAgreement;//合同终止约定
    private List<ContactInfoEntity> contactInfo;//联系信息 一个或多个联系人+联系电话
    //自定字段
    private boolean isFromMap;//表示是否是从地图进入
    private String secondGoodsTypeNo;//货物类型二级编号

    //************2.1.86 新增字段
    private String goodsPattern = "1";//发货模式 1.临时货源  2.长期货源      （默认临时）
    private Integer prepaidProportion;//预付款比例 0-100 整数
    private Integer paymentAfterLoading;//装车后支付比例 0-100 整数
    private Integer arrivalAcceptancePayment;//到货验收支付比例 0-100 整数
    private String pricingType;//定价方式(传汉字)
    private String contactPerson;//咨询对接人名称
    private String contactPersonNo;//咨询对接人NO
    private Double damagePromise;//货损约定 0-50000（吨）
    private String otherSettlementRequire;//其他结算要求

    private String connection;//联系人
    private String connectionPhone;//联系电话

    private int chooseMessagePrice;//是否选择有信息费 1:未选择  0:选择
    private int whetherShow;//货主信息是否展示 0:不展示 1:展示
    private String shipperOwnerUnit;//货主单位
    private String shipperContact;//货主联系人
    private String shipperPhone; //货主联系人电话

    public int getChooseMessagePrice() {
        return chooseMessagePrice;
    }

    public void setChooseMessagePrice(int chooseMessagePrice) {
        this.chooseMessagePrice = chooseMessagePrice;
    }

    public int getWhetherShow() {
        return whetherShow;
    }

    public void setWhetherShow(int whetherShow) {
        this.whetherShow = whetherShow;
    }

    public String getShipperOwnerUnit() {
        return shipperOwnerUnit;
    }

    public void setShipperOwnerUnit(String shipperOwnerUnit) {
        this.shipperOwnerUnit = shipperOwnerUnit;
    }

    public String getShipperContact() {
        return shipperContact;
    }

    public void setShipperContact(String shipperContact) {
        this.shipperContact = shipperContact;
    }

    public String getShipperPhone() {
        return shipperPhone;
    }

    public void setShipperPhone(String shipperPhone) {
        this.shipperPhone = shipperPhone;
    }

    public String getConnection() {
        return connection;
    }

    public void setConnection(String connection) {
        this.connection = connection;
    }

    public String getConnectionPhone() {
        return connectionPhone;
    }

    public void setConnectionPhone(String connectionPhone) {
        this.connectionPhone = connectionPhone;
    }


    protected CargoPublishEntity(Parcel in) {
        no = in.readString();
        id = in.readInt();
        pattern = in.readInt();
        beginTime = in.readLong();
        endTime = in.readLong();
        biddingEndTime = in.readLong();
        loadModeNo = in.readString();
        loadMode = in.readString();
        goodsModeNo = in.readString();
        goodsModeName = in.readString();
        packageModeNo = in.readString();
        packageModeName = in.readString();
        goodsWeight = in.readDouble();
        goodsVolume = in.readDouble();
        if (in.readByte() == 0) {
            msgPrice = null;
        } else {
            msgPrice = in.readDouble();
        }
        freight = in.readDouble();
        freightMode = in.readInt();
        totalFreight = in.readDouble();
        carTypeList = in.createTypedArrayList(GoodsInfoTypeEntity3.CREATOR);
        carLenList = in.createTypedArrayList(GoodsInfoTypeEntity3.CREATOR);
        if (in.readByte() == 0) {
            isDump = null;
        } else {
            isDump = in.readInt();
        }
        heightHurdle = in.readDouble();
        isPush = in.readInt();
        companyNo = in.readString();
        company = in.readString();
        contact = in.readString();
        contactTel = in.readString();
        invoice = in.readString();
        if (in.readByte() == 0) {
            tariff = null;
        } else {
            tariff = in.readDouble();
        }
        invoiceNo = in.readString();
        invoiceRequest = in.readString();
        payType = in.readString();
        mark = in.readString();
        customList = in.createTypedArrayList(SingleItemEntity.CREATOR);
        locationList = in.createTypedArrayList(LocationEntity.CREATOR);
        distance = in.readParcelable(CargoDistanceEntity.class.getClassLoader());
        if (in.readByte() == 0) {
            arrivalTime = null;
        } else {
            arrivalTime = in.readInt();
        }
        if (in.readByte() == 0) {
            performanceBond = null;
        } else {
            performanceBond = in.readDouble();
        }
        lostPromise = in.readString();
        overduePromise = in.readString();
        otherPromise = in.readString();
        receiptAccountRequire = in.readString();
        otherPaymentRequire = in.readString();
        invoicingCompanyName = in.readString();
        invoicingTaxNumber = in.readString();
        invoicingAddress = in.readString();
        invoicingCompanyPhone = in.readString();
        invoicingBank = in.readString();
        invoicingBankAccount = in.readString();
        invoicingBankNumber = in.readString();
        isHistory = in.readByte() != 0;
        alterName = in.readString();
        alterNum = in.readInt();
        isInvoiceChanges = in.readByte() != 0;
        startPointTime = in.readInt();
        endPointTime = in.readInt();
        require = in.readInt();
        useCarType = in.readInt();
        freightType = in.readInt();
        specification = in.readString();
        byte tmpIncludeTax = in.readByte();
        includeTax = tmpIncludeTax == 0 ? null : tmpIncludeTax == 1;
        if (in.readByte() == 0) {
            damageAgreement = null;
        } else {
            damageAgreement = in.readDouble();
        }
        if (in.readByte() == 0) {
            damageCompensation = null;
        } else {
            damageCompensation = in.readDouble();
        }
        if (in.readByte() == 0) {
            damagePromise = null;
        } else {
            damagePromise = in.readDouble();
        }
        otherSettlementReq = in.readString();
        quotationQualification = in.createBooleanArray();
        if (in.readByte() == 0) {
            registeredCapital = null;
        } else {
            registeredCapital = in.readDouble();
        }
        if (in.readByte() == 0) {
            fleetSize = null;
        } else {
            fleetSize = in.readInt();
        }
        transportationQualification = in.readString();
        otherRequirements = in.readString();
        projectName = in.readString();
        projectAddress = in.readParcelable(ProjectAddressEntity.class.getClassLoader());
        projectDesc = in.readString();
        transportReq = in.readString();
        PartyAAgreement = in.readString();
        PartyBAgreement = in.readString();
        breachOfContract = in.readString();
        terminationAgreement = in.readString();
        contactInfo = in.createTypedArrayList(ContactInfoEntity.CREATOR);
        isFromMap = in.readByte() != 0;
        secondGoodsTypeNo = in.readString();
        goodsPattern = in.readString();
        if (in.readByte() == 0) {
            prepaidProportion = null;
        } else {
            prepaidProportion = in.readInt();
        }
        if (in.readByte() == 0) {
            paymentAfterLoading = null;
        } else {
            paymentAfterLoading = in.readInt();
        }
        if (in.readByte() == 0) {
            arrivalAcceptancePayment = null;
        } else {
            arrivalAcceptancePayment = in.readInt();
        }
        pricingType = in.readString();
        contactPerson = in.readString();
        contactPersonNo = in.readString();
        otherPaymentRequire = in.readString();
        otherSettlementRequire = in.readString();

        chooseMessagePrice = in.readInt();
        whetherShow = in.readInt();
        shipperOwnerUnit = in.readString();
        shipperContact = in.readString();
        shipperPhone = in.readString();
    }

    public static final Creator<CargoPublishEntity> CREATOR = new Creator<CargoPublishEntity>() {
        @Override
        public CargoPublishEntity createFromParcel(Parcel in) {
            return new CargoPublishEntity(in);
        }

        @Override
        public CargoPublishEntity[] newArray(int size) {
            return new CargoPublishEntity[size];
        }
    };

    public String getSecondGoodsTypeNo() {
        return secondGoodsTypeNo;
    }

    public void setSecondGoodsTypeNo(String secondGoodsTypeNo) {
        this.secondGoodsTypeNo = secondGoodsTypeNo;
    }

    public CargoPublishEntity() {
    }

    public void setBeginTime(long beginTime) {
        this.beginTime = beginTime;
    }

    public void setEndTime(long endTime) {
        this.endTime = endTime;
    }

    public void setStartPointTime(int startPointTime) {
        this.startPointTime = startPointTime;
    }

    public void setEndPointTime(int endPointTime) {
        this.endPointTime = endPointTime;
    }

    public void setUseCarType(int useCarType) {
        this.useCarType = useCarType;
    }

    public void setFreightType(int freightType) {
        this.freightType = freightType;
    }

    public String getGoodsPattern() {
        return goodsPattern;
    }

    public void setGoodsPattern(String goodsPattern) {
        this.goodsPattern = goodsPattern;
    }

    public Integer getPrepaidProportion() {
        return prepaidProportion;
    }

    public void setPrepaidProportion(Integer prepaidProportion) {
        this.prepaidProportion = prepaidProportion;
    }

    public Integer getPaymentAfterLoading() {
        return paymentAfterLoading;
    }

    public void setPaymentAfterLoading(Integer paymentAfterLoading) {
        this.paymentAfterLoading = paymentAfterLoading;
    }

    public Integer getArrivalAcceptancePayment() {
        return arrivalAcceptancePayment;
    }

    public void setArrivalAcceptancePayment(Integer arrivalAcceptancePayment) {
        this.arrivalAcceptancePayment = arrivalAcceptancePayment;
    }

    public String getPricingType() {
        return pricingType;
    }

    public void setPricingType(String pricingType) {
        this.pricingType = pricingType;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public String getContactPersonNo() {
        return contactPersonNo;
    }

    public void setContactPersonNo(String contactPersonNo) {
        this.contactPersonNo = contactPersonNo;
    }

    public String getInvoiceRequest() {
        return invoiceRequest;
    }

    public void setInvoiceRequest(String invoiceRequest) {
        this.invoiceRequest = invoiceRequest;
    }

    public String getAlterName() {
        return alterName;
    }

    public void setAlterName(String alterName) {
        this.alterName = alterName;
    }

    public int getAlterNum() {
        return alterNum;
    }

    public void setAlterNum(int alterNum) {
        this.alterNum = alterNum;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPattern() {
        return pattern;
    }

    public void setPattern(int pattern) {
        this.pattern = pattern;
    }

    public long getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Long beginTime) {
        this.beginTime = beginTime == null ? 0 : beginTime;
    }

    public long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime == null ? 0 : endTime;
    }

    public long getBiddingEndTime() {
        return biddingEndTime;
    }

    public void setBiddingEndTime(long biddingEndTime) {
        this.biddingEndTime = biddingEndTime;
    }

    public String getLoadModeNo() {
        return loadModeNo;
    }

    public void setLoadModeNo(String loadModeNo) {
        this.loadModeNo = loadModeNo;
    }

    public String getLoadMode() {
        return loadMode;
    }

    public void setLoadMode(String loadMode) {
        this.loadMode = loadMode;
    }

    public String getGoodsModeNo() {
        return goodsModeNo;
    }

    public void setGoodsModeNo(String goodsModeNo) {
        this.goodsModeNo = goodsModeNo;
    }

    public String getGoodsModeName() {
        return goodsModeName;
    }

    public void setGoodsModeName(String goodsModeName) {
        this.goodsModeName = goodsModeName;
    }

    public String getPackageModeNo() {
        return packageModeNo;
    }

    public void setPackageModeNo(String packageModeNo) {
        this.packageModeNo = packageModeNo;
    }

    public String getPackageModeName() {
        return packageModeName;
    }

    public void setPackageModeName(String packageModeName) {
        this.packageModeName = packageModeName;
    }

    public double getGoodsWeight() {
        return goodsWeight;
    }

    public void setGoodsWeight(double goodsWeight) {
        this.goodsWeight = goodsWeight;
    }

    public double getGoodsVolume() {
        return goodsVolume;
    }

    public void setGoodsVolume(double goodsVolume) {
        this.goodsVolume = goodsVolume;
    }

    public Double getMsgPrice() {
        return msgPrice;
    }

    public void setMsgPrice(Double msgPrice) {
        this.msgPrice = msgPrice;
    }

    public double getFreight() {
        return freight;
    }

    public void setFreight(double freight) {
        this.freight = freight;
    }

    public int getFreightMode() {
        return freightMode;
    }

    public void setFreightMode(int freightMode) {
        this.freightMode = freightMode;
    }

    public double getTotalFreight() {
        return totalFreight;
    }

    public void setTotalFreight(double totalFreight) {
        this.totalFreight = totalFreight;
    }

    public List<GoodsInfoTypeEntity3> getCarTypeList() {
        return carTypeList;
    }

    public void setCarTypeList(List<GoodsInfoTypeEntity3> carTypeList) {
        this.carTypeList = carTypeList;
    }

    public List<GoodsInfoTypeEntity3> getCarLenList() {
        return carLenList;
    }

    public void setCarLenList(List<GoodsInfoTypeEntity3> carLenList) {
        this.carLenList = carLenList;
    }

    public Integer getIsDump() {
        return isDump;
    }

    public void setIsDump(Integer isDump) {
        this.isDump = isDump;
    }

    public double getHeightHurdle() {
        return heightHurdle;
    }

    public void setHeightHurdle(double heightHurdle) {
        this.heightHurdle = heightHurdle;
    }

    public int getIsPush() {
        return isPush;
    }

    public void setIsPush(int isPush) {
        this.isPush = isPush;
    }

    public String getCompanyNo() {
        return companyNo;
    }

    public void setCompanyNo(String companyNo) {
        this.companyNo = companyNo;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getContactTel() {
        return contactTel;
    }

    public void setContactTel(String contactTel) {
        this.contactTel = contactTel;
    }

    public String getInvoice() {
        return invoice;
    }

    public void setInvoice(String invoice) {
        this.invoice = invoice;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public List<SingleItemEntity> getCustomList() {
        return customList;
    }

    public void setCustomList(List<SingleItemEntity> customList) {
        this.customList = customList;
    }

    public List<LocationEntity> getLocationList() {
        return locationList;
    }

    public void setLocationList(List<LocationEntity> locationList) {
        this.locationList = locationList;
    }

    public CargoDistanceEntity getDistance() {
        return distance;
    }

    public void setDistance(CargoDistanceEntity distance) {
        this.distance = distance;
    }

    public Integer getArrivalTime() {
        return arrivalTime;
    }

    public void setArrivalTime(Integer arrivalTime) {
        this.arrivalTime = arrivalTime;
    }

    public Double getPerformanceBond() {
        return performanceBond;
    }

    public void setPerformanceBond(Double performanceBond) {
        this.performanceBond = performanceBond;
    }

    public String getLostPromise() {
        return lostPromise;
    }

    public void setLostPromise(String lostPromise) {
        this.lostPromise = lostPromise;
    }

    public String getOverduePromise() {
        return overduePromise;
    }

    public void setOverduePromise(String overduePromise) {
        this.overduePromise = overduePromise;
    }

    public String getOtherPromise() {
        return otherPromise;
    }

    public void setOtherPromise(String otherPromise) {
        this.otherPromise = otherPromise;
    }

    public String getReceiptAccountRequire() {
        return receiptAccountRequire;
    }

    public void setReceiptAccountRequire(String receiptAccountRequire) {
        this.receiptAccountRequire = receiptAccountRequire;
    }

    public String getOtherPaymentRequire() {
        return otherPaymentRequire;
    }

    public void setOtherPaymentRequire(String otherPaymentRequire) {
        this.otherPaymentRequire = otherPaymentRequire;
    }

    public Double getTariff() {
        return tariff;
    }

    public void setTariff(Double tariff) {
        this.tariff = tariff;
    }

    public String getInvoicingCompanyName() {
        return invoicingCompanyName;
    }

    public void setInvoicingCompanyName(String invoicingCompanyName) {
        this.invoicingCompanyName = invoicingCompanyName;
    }

    public String getInvoicingTaxNumber() {
        return invoicingTaxNumber;
    }

    public void setInvoicingTaxNumber(String invoicingTaxNumber) {
        this.invoicingTaxNumber = invoicingTaxNumber;
    }

    public String getInvoicingAddress() {
        return invoicingAddress;
    }

    public void setInvoicingAddress(String invoicingAddress) {
        this.invoicingAddress = invoicingAddress;
    }

    public String getInvoicingCompanyPhone() {
        return invoicingCompanyPhone;
    }

    public void setInvoicingCompanyPhone(String invoicingCompanyPhone) {
        this.invoicingCompanyPhone = invoicingCompanyPhone;
    }

    public boolean isInvoiceChanges() {
        return isInvoiceChanges;
    }

    public void setInvoiceChanges(boolean invoiceChanges) {
        isInvoiceChanges = invoiceChanges;
    }

    public String getInvoicingBank() {
        return invoicingBank;
    }

    public void setInvoicingBank(String invoicingBank) {
        this.invoicingBank = invoicingBank;
    }

    public String getInvoicingBankAccount() {
        return invoicingBankAccount;
    }

    public void setInvoicingBankAccount(String invoicingBankAccount) {
        this.invoicingBankAccount = invoicingBankAccount;
    }

    public String getInvoicingBankNumber() {
        return invoicingBankNumber;
    }

    public void setInvoicingBankNumber(String invoicingBankNumber) {
        this.invoicingBankNumber = invoicingBankNumber;
    }

    public boolean isHistory() {
        return isHistory;
    }

    public void setHistory(boolean history) {
        isHistory = history;
    }

    public int getStartPointTime() {
        return startPointTime;
    }

    public void setStartPointTime(Integer startPointTime) {
        this.startPointTime = startPointTime == null ? 0 : startPointTime;
    }

    public int getEndPointTime() {
        return endPointTime;
    }

    public void setEndPointTime(Integer endPointTime) {
        this.endPointTime = endPointTime == null ? 0 : endPointTime;
    }

    public int getRequire() {
        return require;
    }

    public void setRequire(int require) {
        this.require = require;
    }

    public int getUseCarType() {
        return useCarType;
    }

    public void setUseCarType(Integer useCarType) {
        this.useCarType = useCarType == null ? 0 : useCarType;
    }

    public int getFreightType() {
        return freightType;
    }

    public void setFreightType(Integer freightType) {
        this.freightType = freightType == null ? 0 : freightType;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public Boolean getIncludeTax() {
        return includeTax;
    }

    public void setIncludeTax(Boolean includeTax) {
        this.includeTax = includeTax;
    }

    public Double getDamageAgreement() {
        return damageAgreement;
    }

    public void setDamageAgreement(Double damageAgreement) {
        this.damageAgreement = damageAgreement;
    }

    public Double getDamageCompensation() {
        return damageCompensation;
    }

    public void setDamageCompensation(Double damageCompensation) {
        this.damageCompensation = damageCompensation;
    }

    public String getOtherSettlementReq() {
        return otherSettlementReq;
    }

    public void setOtherSettlementReq(String otherSettlementReq) {
        this.otherSettlementReq = otherSettlementReq;
    }

    public boolean[] getQuotationQualification() {
        return quotationQualification;
    }

    public void setQuotationQualification(boolean[] quotationQualification) {
        this.quotationQualification = quotationQualification;
    }

    public Double getRegisteredCapital() {
        return registeredCapital;
    }

    public void setRegisteredCapital(Double registeredCapital) {
        this.registeredCapital = registeredCapital;
    }

    public Integer getFleetSize() {
        return fleetSize;
    }

    public void setFleetSize(Integer fleetSize) {
        this.fleetSize = fleetSize;
    }

    public String getTransportationQualification() {
        return transportationQualification;
    }

    public void setTransportationQualification(String transportationQualification) {
        this.transportationQualification = transportationQualification;
    }

    public String getOtherRequirements() {
        return otherRequirements;
    }

    public void setOtherRequirements(String otherRequirements) {
        this.otherRequirements = otherRequirements;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public ProjectAddressEntity getProjectAddress() {
        return projectAddress;
    }

    public void setProjectAddress(ProjectAddressEntity projectAddress) {
        this.projectAddress = projectAddress;
    }

    public String getProjectDesc() {
        return projectDesc;
    }

    public void setProjectDesc(String projectDesc) {
        this.projectDesc = projectDesc;
    }

    public String getTransportReq() {
        return transportReq;
    }

    public void setTransportReq(String transportReq) {
        this.transportReq = transportReq;
    }

    public String getPartyAAgreement() {
        return PartyAAgreement;
    }

    public void setPartyAAgreement(String partyAAgreement) {
        PartyAAgreement = partyAAgreement;
    }

    public String getPartyBAgreement() {
        return PartyBAgreement;
    }

    public void setPartyBAgreement(String partyBAgreement) {
        PartyBAgreement = partyBAgreement;
    }

    public String getBreachOfContract() {
        return breachOfContract;
    }

    public void setBreachOfContract(String breachOfContract) {
        this.breachOfContract = breachOfContract;
    }

    public String getTerminationAgreement() {
        return terminationAgreement;
    }

    public void setTerminationAgreement(String terminationAgreement) {
        this.terminationAgreement = terminationAgreement;
    }

    public List<ContactInfoEntity> getContactInfo() {
        return contactInfo;
    }

    public void setContactInfo(List<ContactInfoEntity> contactInfo) {
        this.contactInfo = contactInfo;
    }

    public boolean isFromMap() {
        return isFromMap;
    }

    public void setFromMap(boolean fromMap) {
        isFromMap = fromMap;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(no);
        dest.writeInt(id);
        dest.writeInt(pattern);
        dest.writeLong(beginTime);
        dest.writeLong(endTime);
        dest.writeLong(biddingEndTime);
        dest.writeString(loadModeNo);
        dest.writeString(loadMode);
        dest.writeString(goodsModeNo);
        dest.writeString(goodsModeName);
        dest.writeString(packageModeNo);
        dest.writeString(packageModeName);
        dest.writeDouble(goodsWeight);
        dest.writeDouble(goodsVolume);
        if (msgPrice == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(msgPrice);
        }
        dest.writeDouble(freight);
        dest.writeInt(freightMode);
        dest.writeDouble(totalFreight);
        dest.writeTypedList(carTypeList);
        dest.writeTypedList(carLenList);
        if (isDump == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(isDump);
        }
        dest.writeDouble(heightHurdle);
        dest.writeInt(isPush);
        dest.writeString(companyNo);
        dest.writeString(company);
        dest.writeString(contact);
        dest.writeString(contactTel);
        dest.writeString(invoice);
        if (tariff == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(tariff);
        }
        dest.writeString(invoiceNo);
        dest.writeString(invoiceRequest);
        dest.writeString(payType);
        dest.writeString(mark);
        dest.writeTypedList(customList);
        dest.writeTypedList(locationList);
        dest.writeParcelable(distance, flags);
        if (arrivalTime == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(arrivalTime);
        }
        if (performanceBond == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(performanceBond);
        }
        dest.writeString(lostPromise);
        dest.writeString(overduePromise);
        dest.writeString(otherPromise);
        dest.writeString(receiptAccountRequire);
        dest.writeString(otherPaymentRequire);
        dest.writeString(invoicingCompanyName);
        dest.writeString(invoicingTaxNumber);
        dest.writeString(invoicingAddress);
        dest.writeString(invoicingCompanyPhone);
        dest.writeString(invoicingBank);
        dest.writeString(invoicingBankAccount);
        dest.writeString(invoicingBankNumber);
        dest.writeByte((byte) (isHistory ? 1 : 0));
        dest.writeString(alterName);
        dest.writeInt(alterNum);
        dest.writeByte((byte) (isInvoiceChanges ? 1 : 0));
        dest.writeInt(startPointTime);
        dest.writeInt(endPointTime);
        dest.writeInt(require);
        dest.writeInt(useCarType);
        dest.writeInt(freightType);
        dest.writeString(specification);
        dest.writeByte((byte) (includeTax == null ? 0 : includeTax ? 1 : 2));
        if (damageAgreement == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(damageAgreement);
        }
        if (damageCompensation == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(damageCompensation);
        }
        if (damagePromise == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(damagePromise);
        }
        dest.writeString(otherSettlementReq);
        dest.writeBooleanArray(quotationQualification);
        if (registeredCapital == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeDouble(registeredCapital);
        }
        if (fleetSize == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(fleetSize);
        }
        dest.writeString(transportationQualification);
        dest.writeString(otherRequirements);
        dest.writeString(projectName);
        dest.writeParcelable(projectAddress, flags);
        dest.writeString(projectDesc);
        dest.writeString(transportReq);
        dest.writeString(PartyAAgreement);
        dest.writeString(PartyBAgreement);
        dest.writeString(breachOfContract);
        dest.writeString(terminationAgreement);
        dest.writeTypedList(contactInfo);
        dest.writeByte((byte) (isFromMap ? 1 : 0));
        dest.writeString(secondGoodsTypeNo);
        dest.writeString(goodsPattern);
        if (prepaidProportion == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(prepaidProportion);
        }
        if (paymentAfterLoading == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(paymentAfterLoading);
        }
        if (arrivalAcceptancePayment == null) {
            dest.writeByte((byte) 0);
        } else {
            dest.writeByte((byte) 1);
            dest.writeInt(arrivalAcceptancePayment);
        }
        dest.writeString(pricingType);
        dest.writeString(contactPerson);
        dest.writeString(contactPersonNo);
        dest.writeString(otherPaymentRequire);
        dest.writeString(otherSettlementRequire);

        dest.writeInt(chooseMessagePrice);
        dest.writeInt(whetherShow);
        dest.writeString(shipperOwnerUnit);
        dest.writeString(shipperContact);
        dest.writeString(shipperPhone);


    }

    /**
     * 位置信息
     */
    public static class LocationEntity implements Parcelable, MultiItemEntity {
        private int itemType;//列表类型
        private int cacheIndex;//缓存下标
        private double latitude;//经度
        private double longitude;//纬度
        private String province;//省
        private String city;//市
        private String district;//区
        private String provinceNo;//省编码
        private String cityNo;//城市编码
        private String districtNo;//区域编码
        private String address;//详细地址
        private String contact;//联系人
        private String telPhone;//联系人电话
        //物流2.0.1新增字段 begin
        private String goodsUnit;//货物单位
        private int require;//装车要求
        //物流2.0.1新增字段 end

        public LocationEntity() {
        }

        public LocationEntity(int itemType) {
            this.itemType = itemType;
        }

        public LocationEntity(int itemType, int cacheIndex) {
            this.itemType = itemType;
            this.cacheIndex = cacheIndex;
        }

        protected LocationEntity(Parcel in) {
            itemType = in.readInt();
            cacheIndex = in.readInt();
            latitude = in.readDouble();
            longitude = in.readDouble();
            province = in.readString();
            city = in.readString();
            district = in.readString();
            provinceNo = in.readString();
            cityNo = in.readString();
            districtNo = in.readString();
            address = in.readString();
            contact = in.readString();
            telPhone = in.readString();
            goodsUnit = in.readString();
            require = in.readInt();
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeInt(itemType);
            dest.writeInt(cacheIndex);
            dest.writeDouble(latitude);
            dest.writeDouble(longitude);
            dest.writeString(province);
            dest.writeString(city);
            dest.writeString(district);
            dest.writeString(provinceNo);
            dest.writeString(cityNo);
            dest.writeString(districtNo);
            dest.writeString(address);
            dest.writeString(contact);
            dest.writeString(telPhone);
            dest.writeString(goodsUnit);
            dest.writeInt(require);
        }

        @Override
        public int describeContents() {
            return 0;
        }

        public static final Creator<LocationEntity> CREATOR = new Creator<LocationEntity>() {
            @Override
            public LocationEntity createFromParcel(Parcel in) {
                return new LocationEntity(in);
            }

            @Override
            public LocationEntity[] newArray(int size) {
                return new LocationEntity[size];
            }
        };

        public void setItemType(int itemType) {
            this.itemType = itemType;
        }

        public int getCacheIndex() {
            return cacheIndex;
        }

        public void setCacheIndex(int cacheIndex) {
            this.cacheIndex = cacheIndex;
        }

        public double getLatitude() {
            return latitude;
        }

        public void setLatitude(double latitude) {
            this.latitude = latitude;
        }

        public double getLongitude() {
            return longitude;
        }

        public void setLongitude(double longitude) {
            this.longitude = longitude;
        }

        public String getProvince() {
            return province;
        }

        public void setProvince(String province) {
            this.province = province;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getDistrict() {
            return district;
        }

        public void setDistrict(String district) {
            this.district = district;
        }

        public String getProvinceNo() {
            return provinceNo;
        }

        public void setProvinceNo(String provinceNo) {
            this.provinceNo = provinceNo;
        }

        public String getCityNo() {
            return cityNo;
        }

        public void setCityNo(String cityNo) {
            this.cityNo = cityNo;
        }

        public String getDistrictNo() {
            return districtNo;
        }

        public void setDistrictNo(String districtNo) {
            this.districtNo = districtNo;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public String getContact() {
            return contact;
        }

        public void setContact(String contact) {
            this.contact = contact;
        }

        public String getTelPhone() {
            return telPhone;
        }

        public void setTelPhone(String telPhone) {
            this.telPhone = telPhone;
        }

        public String getGoodsUnit() {
            return goodsUnit;
        }

        public void setGoodsUnit(String goodsUnit) {
            this.goodsUnit = goodsUnit;
        }

        public int getRequire() {
            return require;
        }

        public void setRequire(int require) {
            this.require = require;
        }

        @Override
        public int getItemType() {
            return itemType;
        }
    }

    public static class ProjectAddressEntity implements Parcelable {

        private Double projectLatitude;
        private Double projectLongitude;
        private String projectProvinceName;
        private String projectProvinceNo;
        private String projectCityName;
        private String projectCityNo;
        private String projectDistrictName;
        private String projectDistrictNo;
        private String address;

        public ProjectAddressEntity() {
        }

        protected ProjectAddressEntity(Parcel in) {
            if (in.readByte() == 0) {
                projectLatitude = null;
            } else {
                projectLatitude = in.readDouble();
            }
            if (in.readByte() == 0) {
                projectLongitude = null;
            } else {
                projectLongitude = in.readDouble();
            }
            projectProvinceName = in.readString();
            projectProvinceNo = in.readString();
            projectCityName = in.readString();
            projectCityNo = in.readString();
            projectDistrictName = in.readString();
            projectDistrictNo = in.readString();
            address = in.readString();
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            if (projectLatitude == null) {
                dest.writeByte((byte) 0);
            } else {
                dest.writeByte((byte) 1);
                dest.writeDouble(projectLatitude);
            }
            if (projectLongitude == null) {
                dest.writeByte((byte) 0);
            } else {
                dest.writeByte((byte) 1);
                dest.writeDouble(projectLongitude);
            }
            dest.writeString(projectProvinceName);
            dest.writeString(projectProvinceNo);
            dest.writeString(projectCityName);
            dest.writeString(projectCityNo);
            dest.writeString(projectDistrictName);
            dest.writeString(projectDistrictNo);
            dest.writeString(address);
        }

        @Override
        public int describeContents() {
            return 0;
        }

        public static final Creator<ProjectAddressEntity> CREATOR = new Creator<ProjectAddressEntity>() {
            @Override
            public ProjectAddressEntity createFromParcel(Parcel in) {
                return new ProjectAddressEntity(in);
            }

            @Override
            public ProjectAddressEntity[] newArray(int size) {
                return new ProjectAddressEntity[size];
            }
        };

        public Double getProjectLatitude() {
            return projectLatitude;
        }

        public void setProjectLatitude(Double projectLatitude) {
            this.projectLatitude = projectLatitude;
        }

        public Double getProjectLongitude() {
            return projectLongitude;
        }

        public void setProjectLongitude(Double projectLongitude) {
            this.projectLongitude = projectLongitude;
        }

        public String getProjectProvinceName() {
            return projectProvinceName;
        }

        public void setProjectProvinceName(String projectProvinceName) {
            this.projectProvinceName = projectProvinceName;
        }

        public String getProjectProvinceNo() {
            return projectProvinceNo;
        }

        public void setProjectProvinceNo(String projectProvinceNo) {
            this.projectProvinceNo = projectProvinceNo;
        }

        public String getProjectCityName() {
            return projectCityName;
        }

        public void setProjectCityName(String projectCityName) {
            this.projectCityName = projectCityName;
        }

        public String getProjectCityNo() {
            return projectCityNo;
        }

        public void setProjectCityNo(String projectCityNo) {
            this.projectCityNo = projectCityNo;
        }

        public String getProjectDistrictName() {
            return projectDistrictName;
        }

        public void setProjectDistrictName(String projectDistrictName) {
            this.projectDistrictName = projectDistrictName;
        }

        public String getProjectDistrictNo() {
            return projectDistrictNo;
        }

        public void setProjectDistrictNo(String projectDistrictNo) {
            this.projectDistrictNo = projectDistrictNo;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }
    }

    public static class ContactInfoEntity implements Parcelable, MultiItemEntity {
        private String contrcts;//联系人
        private String contrctsNumber;//联系人电话
        private int itemType = SingleItemConstant.TYPE_TWO;

        public ContactInfoEntity() {
        }

        protected ContactInfoEntity(Parcel in) {
            contrcts = in.readString();
            contrctsNumber = in.readString();
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(contrcts);
            dest.writeString(contrctsNumber);
        }

        @Override
        public int describeContents() {
            return 0;
        }

        public static final Creator<ContactInfoEntity> CREATOR = new Creator<ContactInfoEntity>() {
            @Override
            public ContactInfoEntity createFromParcel(Parcel in) {
                return new ContactInfoEntity(in);
            }

            @Override
            public ContactInfoEntity[] newArray(int size) {
                return new ContactInfoEntity[size];
            }
        };

        public String getContrcts() {
            return contrcts;
        }

        public void setContrcts(String contrcts) {
            this.contrcts = contrcts;
        }

        public String getContrctsNumber() {
            return contrctsNumber;
        }

        public void setContrctsNumber(String contrctsNumber) {
            this.contrctsNumber = contrctsNumber;
        }

        public void setItemType(int itemType) {
            this.itemType = itemType;
        }

        @Override
        public int getItemType() {
            return itemType;
        }
    }

    public Double getDamagePromise() {
        return damagePromise;
    }

    public void setDamagePromise(Double damagePromise) {
        this.damagePromise = damagePromise;
    }

    public String getOtherSettlementRequire() {
        return otherSettlementRequire;
    }

    public void setOtherSettlementRequire(String otherSettlementRequire) {
        this.otherSettlementRequire = otherSettlementRequire;
    }

    /**
     * 运费类型
     */
    @IntDef({FreightMode.MODE_ONCE, FreightMode.MODE_WEIGHT, FreightMode.MODE_VOLUME})
    @Retention(RetentionPolicy.SOURCE)
    public @interface FreightMode {
        int MODE_ONCE = 1;//趟
        int MODE_WEIGHT = 2;//吨
        int MODE_VOLUME = 3;//方
    }
}
